package com.start.form.engine.core.listener;

import com.start.common.event.StartBaseEvent;
import com.start.form.engine.core.StartColumnInfo;
import com.start.form.engine.core.model.StartFormColumnModel;
import com.start.form.engine.core.entity.StartFormConfig;

import java.util.List;

public interface StartTableListener extends StartBaseEvent {
    /**
     * 获取需要监听的数据表所属组别 多个请用英文逗号隔开
     *
     * @return
     */
    default String getGroupCode() {
        return null;
    }

    /**
     * 获取需要监听的数据表 多个请用英文逗号隔开
     *
     * @return
     */
    default String getTableName() {
        return null;
    }

    /**
     * 创建数据表前
     *
     * @param formConfig
     */
   default void beforeCreateTable(StartFormConfig formConfig){

   }

    /*
     * 创建表后
     *
     * @param formConfig
     */
    default void afterCreateTable(StartFormConfig formConfig) {
    }

    /**
     * 更新数据表前
     *
     * @param formConfig 表新配置
     * @param oldColumn  表旧列
     */
    default void beforeUpdateTable(StartFormConfig formConfig, List<StartFormColumnModel> oldColumn) {
    }

    /**
     * 更新数据表后
     */
    default void afterUpdateTable(StartFormConfig formConfig) {
    }

    /**
     * 同步数据表前
     *
     * @param formConfig      数据表配置
     * @param startColumnInfo
     */
    default void beforeSynchronizationTable(StartFormConfig formConfig,   StartColumnInfo startColumnInfo) {
    }

    /**
     * 同步数据表后
     *
     * @param formConfig      数据表配置
     * @param startColumnInfo
     */
    default void afterSynchronizationTable(StartFormConfig formConfig, List<StartFormColumnModel> newColumn,  StartColumnInfo startColumnInfo) {
    }

    /**
     * 删除数据表之前
     *
     * @param formConfig
     */
    default void beforeDeleteTable(StartFormConfig formConfig) {
    }

    /**
     * 删除数据表之后
     *
     * @param formConfig
     */
    default void afterDeleteTable(StartFormConfig formConfig) {
    }

    /**
     * 清空数据表前
     *
     * @param formConfig
     */
    default void beforeClearData(StartFormConfig formConfig) {
    }

    /**
     * 清口数据表后
     *
     * @param formConfig
     */
    default void afterClearData(StartFormConfig formConfig) {
    }
}
